table of contents
FALLOCATE(2) | Manuel du programmeur Linux | FALLOCATE(2) |
NOM¶
fallocate - Manipuler un espace de fichier
SYNOPSIS¶
#define _GNU_SOURCE #include <fcntl.h> int fallocate(int fd, int mode, off_t offset, off_t len);
DESCRIPTION¶
C'est un appel système spécifique à Linux et non portable. Pour la méthode portable, spécifiée par POSIX.1, pour assurer que de l'espace est alloué pour un fichier, consultez posix_fallocate().
fallocate() permet à l'appelant de manipuler directement l'espace disque alloué pour le fichier référencé par fd pour la plage d'octets débutant à offset et de longueur len octets.
Le paramètre mode définit l'opération à effectuer sur la plage donnée. Actuellement, un seul attribut est pris en charge pour mode :
- FALLOC_FL_KEEP_SIZE
- Cet attribut alloue et initialise à zéro l'espace disque de la plage définie par offset et len. Après un appel réussi, les écritures dans cette place sont assurées de ne pas échouer à cause d'un manque de place sur le disque. La préallocation de blocs initialisés à zéro au-delà de la fin de fichier est utile pour l'optimisation de la charge de travail pour d'ajout. La préallocation ne modifie pas la taille du fichier (comme indiqué par stat(2)) même si elle est inférieure à offset+len.
Si l'attribut FALLOC_FL_KEEP_SIZE n'est pas spécifié dans mode, le comportement par défaut est pratiquement le même que quand l'attribut est spécifié. La seule différence est qu'en cas de réussite, la taille du fichier sera modifiée si offset + len est supérieur à la taille du fichier. Ce comportement par défaut ressemble de près au comportement de la fonction de bibliothèque posix_fallocate(3), et est conçu comme une méthode d'optimisation de l'implémentation de cette fonction.
Parce que l'allocation est effectuée en fragments de taille de blocs, fallocate() peut allouer un espace plus grand que celui qui a été spécifié.
VALEUR RENVOYÉE¶
La fonction fallocate() renvoie zéro en cas de réussite et -1 en cas d'échec.
ERREURS¶
- EBADF
- fd n'est pas un descripteur de fichier valable ou n'est pas ouvert en écriture.
- EFBIG
- offset+len excède la taille maximum de fichier.
- EINTR
- Un signal a été capturé pendant l'exécution.
- EINVAL
- offset était inférieur à 0, ou len était inférieur ou égal à 0.
- EIO
- Une erreur d'entrée-sortie s'est produite durant la lecture ou l'écriture sur un système de fichiers.
- ENODEV
- fd ne fait pas référence à un fichier régulier ou un répertoire. (Si fd est un tube ou une FIFO, une erreur différente en résultera)
- ENOSPC
- Il n'y a pas suffisamment d'espace disponible sur le périphérique où se trouve le fichier référencé par fd.
- ENOSYS
- Le système de fichiers contenant le fichier référencé par fd ne gère pas cette opération.
- EOPNOTSUPP
- Le mode n'est pas pris en charge par le système de fichiers contenant le fichier référencé par fd.
VERSIONS¶
fallocate() est disponible dans Linux depuis le noyau 2.6.23. Le glibc le prend en charge depuis la version 2.10.
CONFORMITɶ
fallocate() est spécifique à Linux.
VOIR AUSSI¶
COLOPHON¶
Cette page fait partie de la publication 3.23 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://alioth.debian.org/projects/perkamon/>.
Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-l10n-fr@lists.alioth.debian.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
13 mars 2009 | Linux |